home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 038 (1987-11-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 038 (1987-11-15)(Ossowski, Stefan)(DE)(PD).adf / BasicProgs / Curves (.txt) < prev    next >
AmigaBASIC Source Code  |  1989-01-18  |  5KB  |  212 lines

  1. ' Conplex Curves by George Trepal copyright 1987
  2.  
  3. 'I got the idea for this program from the April 1967
  4. 'Clemson Chronicle which is the student magazine of Clemson
  5. 'University.  The Chronicle was not copyrighted however this
  6. 'program is copyright 1987 to George Trepal.  This is a public
  7. 'domain program Ok to give or distribute for a small fee
  8. 'but not to sell.
  9.  
  10. over = 40: Yadjust = 380
  11. SCREEN 2,640,400,2,4
  12. WINDOW 2, "",,0,2
  13. GOSUB Originshifts
  14. PALETTE 0, 0,0,0
  15. PALETTE 1, 0,0,0
  16. PALETTE 2, 0.5,0.15,0.15
  17. PALETTE 3, 0.91,0.48,0.15
  18.  
  19. COLOR 2,0
  20. FOR j = 0 TO 380 STEP 20: ' Y axis
  21.   LINE (80,j) - (240,j)
  22. NEXT
  23. FOR j = 80 TO 240 STEP 20: ' X axis
  24.   LINE (j,0) - (j,380)
  25. NEXT
  26.  
  27. COLOR 3,0
  28. LOCATE 3,1
  29. PRINT  TAB(over + 6) "COMPLEX CURVES"
  30.  
  31. COLOR 2,0
  32. LOCATE 5,1
  33. PRINT  TAB(over) "r = 4[SIN(theta - 1) + 1]"
  34. PRINT  TAB(over + 2) "between 0 and 6.28"
  35. FOR theta = 0 TO 6.28 STEP 0.02
  36.   r = 4 * (SIN(theta - 1) + 1)
  37.   x = (r * COS(theta)) * 10 + OrigX(1) + 80
  38.   y = Yadjust - ((r * SIN(theta)) * 10 + OrigY(1))
  39.   PSET (x,y),3
  40. NEXT
  41.  
  42. p = 2
  43. PRINT  TAB(over) "x = -[(y/1.5)^4  - (y/1.5)^2]"
  44. PRINT  TAB(over + 3) "between -2 and 1.5"
  45. FOR y = -2 TO 1.5 STEP 0.05: ' face
  46.   x = -((y/1.5)^4 - (y/1.5)^2)
  47.   GOSUB Setpoints0
  48.   NEXT
  49.  
  50. p = 3
  51. PRINT  TAB(over) "y = -x^3/2"
  52. PRINT  TAB(over + 2) "between -1.6 and 1.5"
  53. FOR x = -1.6 TO 1.5 STEP 0.05: ' front of neck
  54.   y = -(x^3/2)
  55.   GOSUB Setpoints0
  56. NEXT
  57.    
  58. p = 4
  59. PRINT  TAB(over) "x = 10.5"
  60. PRINT  TAB(over + 2) "between 17 and 24.8"
  61. FOR y = 17 TO 24.8 STEP 0.1: ' front of nearside arm
  62.   x = 10.5
  63.   GOSUB Setpoints0
  64. NEXT
  65.  
  66. p = 5
  67. PRINT  TAB(over) "y = -7x"
  68. PRINT  TAB(over + 2) "between 0 and 1"
  69. FOR x = 0 TO 1 STEP 0.01: ' back of nearside arm
  70.   y = -7 * x
  71.   GOSUB Setpoints0
  72. NEXT
  73.  
  74. p = 6
  75. PRINT  TAB(over) "y = -SQR(5x)"
  76. PRINT  TAB(over + 2) "between .5 and 5"
  77. FOR x = 0.5 TO 5 STEP 0.1: ' top of breast
  78.   y = -SQR(5 * x)
  79.   GOSUB Setpoints0
  80. NEXT
  81.  
  82. p = 7
  83. PRINT  TAB(over) "y = -SQR(6.25 - x^2)"
  84. PRINT  TAB(over + 2) "between -1 and 2.5"
  85. FOR x = -1 TO 2.5 STEP 0.05: ' underside of breast
  86.   y = -SQR(6.25 - x^2)
  87.   GOSUB Setpoints0
  88. NEXT
  89.  
  90. p = 8
  91. PRINT  TAB(over) "y = x^2/4"
  92. PRINT  TAB(over + 2) "between -4 and -2.4"
  93. FOR x = -4 TO - 2.4 STEP 0.05: ' lower farside arm
  94.   y = 0.25 * x^2
  95.   GOSUB Setpoints0
  96. NEXT
  97.  
  98. p = 8
  99. PRINT  TAB(over) "y = x^2/4"
  100. PRINT  TAB(over + 2) "between 4 and 5"
  101. FOR x = 4 TO 5 STEP 0.05: ' chest
  102.   y = 0.25 * x^2
  103.   GOSUB Setpoints0
  104. NEXT                         
  105.  
  106. p = 9
  107. PRINT  TAB(over) "x = -y^2/64"
  108. PRINT  TAB (over + 2) "between -8 and 8"
  109. FOR y = -8 TO 8 STEP 0.1: ' belly and front of legs
  110.   x = -1/64 * y^2
  111.   GOSUB Setpoints0
  112. NEXT
  113.  
  114. p = 10
  115. PRINT  TAB(over) "y = .47x^3 -x^2/2 + 1.03x"
  116. PRINT  TAB(over + 2)  "between -1 and 1.5"
  117. FOR x = -1 TO 1.5 STEP 0.05: ' back of neck
  118.   y = 0.47 * x^3 - 0.5 * x^2 + 1.03 * x
  119.   GOSUB Setpoints0
  120. NEXT
  121.  
  122. p = 11
  123. PRINT  TAB(over) "y = x^2"
  124. PRINT  TAB (over + 2) "between -5 and -4.2"
  125. FOR x = -5 TO -4.2 STEP 0.01: ' back of farside arm
  126.   y = x^2
  127.   GOSUB Setpoints0
  128. NEXT
  129.  
  130. p = 11
  131. PRINT  TAB(over) "y = x^2"
  132. PRINT  TAB(over + 2) "between -2.3 and -1"
  133. FOR x = -2.3 TO -1 STEP 0.01: ' back of leg
  134.   y = x^2
  135.   GOSUB Setpoints0
  136. NEXT
  137.  
  138. p = 12
  139. PRINT  TAB(over) "x = SIN(3.14 * y/7)"
  140. PRINT  TAB(over + 2) "between -7.5 and 0"
  141. FOR y = -7.5 TO 0 STEP 0.05: ' nearside cheek
  142.   x = SIN(3.14 * y/7)
  143.   GOSUB Setpoints0
  144. NEXT
  145.  
  146. p = 12
  147. PRINT  TAB(over) "x = SIN(3.14 * y/7)"
  148. PRINT  TAB(over + 2) "between 3 and 13"
  149. FOR y = 3 TO 13 STEP 0.05: ' spine
  150.   x = SIN(3.14 * y/7)
  151.   GOSUB Setpoints0
  152. NEXT
  153.  
  154. p = 13
  155. PRINT  TAB(over) "y = -7x"
  156. PRINT  TAB(over + 2) "between -.7 and 0"
  157. FOR x = -0.7 TO 0 STEP 0.01: ' lower back
  158.   y = -7 * x
  159.   GOSUB Setpoints0
  160. NEXT
  161.  
  162. PRINT  TAB(over) "y = .65x^2 - 6.9x  + 22.2"
  163. PRINT  TAB (over + 2) "between 2.8 and 5.6"
  164. FOR x = 2.8 TO 5.6 STEP 0.05: ' lower ass
  165.   y = 0.647 * x^2 - 6.9 * x + 22.24
  166.   GOSUB Setpoints1
  167. NEXT
  168.  
  169. PRINT  TAB(over) "y = .66x^3 - 8.8x^2 + 40x - 49.5"
  170. PRINT  TAB(over + 2) "between 2.8 and 5.5"
  171. FOR x = 2.8 TO 5.5 STEP 0.05: ' lower back
  172.   y = 0.663 * x^3 - 8.83 * x^2 + 40.1 * x -49.5
  173.   GOSUB Setpoints1
  174. NEXT
  175.  
  176. PRINT  TAB(over) "y = -.32x^2 + 6.8x - 19.5"
  177. PRINT  TAB(over + 2) "between .8 and 1.04"
  178. FOR x = 8.1 TO 10.4 STEP 0.1: ' close off arm
  179.   y = -0.322 * x^2 + 6.87 * x - 19.5
  180.   GOSUB Setpoints1
  181. NEXT
  182.  
  183. PRINT : PRINT  TAB(over) "PRESS ANY KEY TO QUIT"
  184. COLOR 3,0
  185. PRINT : PRINT  TAB(over - 4) "A PUBLIC DOMAIN PROGRAM BY GEORGE TREPAL"
  186.  
  187. Hold:
  188.   IF INKEY$ = "" THEN Hold
  189.     WINDOW CLOSE 2
  190.     SCREEN CLOSE 2
  191.     LIST
  192.     END
  193.   
  194. Originshifts:
  195. DIM OrigX(13), OrigY(13)
  196. FOR j = 1 TO 13
  197. READ OrigX(j), OrigY(j)
  198. NEXT
  199. DATA 80,320,90,305,90,265,0,0,70,220
  200. DATA 100,260,125,210,70,120,120,80,30,260
  201. DATA 70,-10,50,120,60,0,155,55
  202. RETURN
  203.  
  204. Setpoints0:
  205.   PSET (x * 10 + OrigX(p) + 80, Yadjust - (y * 10 + OrigY(p))),3
  206.   RETURN
  207.  
  208. Setpoints1:  
  209.   PSET (x * 10 + 80, Yadjust - (y * 10)),3
  210.   RETURN
  211.  
  212.